import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import { createHtmlPlugin } from 'vite-plugin-html'
import viteCompression from 'vite-plugin-compression'
import vueSetupExtend from 'vite-plugin-vue-setup-extend'
import { resolve } from 'path'

export default defineConfig(({ mode }) => {
  const env = loadEnv(mode, process.cwd(), '')
  const { VUE_APP_BASE_API, VUE_APP_TITLE, Antv_Map_Server } = env

  return {
    base: './',

    envPrefix: ['VITE', 'VUE'], // 环境变量前缀,默认只会暴露VITE开头变量，定义后可暴露VUE开头变量
    define: {
      'process.env': env,
    },
    plugins: [
      vue(),
      vueSetupExtend(),
      viteCompression(), // 打包压缩，主要是本地gzip，如果服务器配置压缩也可以
      createHtmlPlugin({
        inject: {
          data: {
            title: VUE_APP_TITLE,
          },
        },
      }),
    ],
    resolve: {
      extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'], // 忽略文件名的后缀
      alias: {
        '@': resolve(__dirname, 'src'),
        '@@': resolve(__dirname, 'src/components'),
        '&': resolve(__dirname, 'public'),
      },
    },
    server: {
      port: 8080,
      // host: '0.0.0.0',
      headers: {
        'Access-Control-Allow-Origin': '*',
      },
      proxy: {
        // base api
        [VUE_APP_BASE_API]: {
          target: 'http://127.0.0.1:3000',
          changeOrigin: true,
          // rewrite: (path) =>
          //   path.replace(new RegExp(`^${VUE_APP_BASE_API}`), ''),
        },
      },
    },

    build: {
      minify: 'terser',
      // assetsDir: "./", //指定输出路径
      // outDir: "dist", // 指定输出文件路径
      // 代码压缩配置
      terserOptions: {
        // 生产环境移除console
        compress: {
          drop_console: true,
          drop_debugger: true,
        },
      },
    },
  }
})
